package com.kexio.log.analytics.service;

import java.time.LocalDateTime;

/**
 * 日志指标收集器接口
 * 
 * 负责收集和记录日志相关的分析指标和统计信息
 * 
 * @author Kexio Team
 * @since 1.0.0
 */
public interface LogMetricsCollector {
    
    /**
     * 记录方法执行日志
     * 
     * @param className 类名
     * @param methodName 方法名
     * @param layer 层级 (CONTROLLER, SERVICE, MAPPER)
     * @param executionTime 执行时间 (毫秒)
     * @param isSuccess 是否成功
     * @param exception 异常信息 (如果有)
     */
    void recordMethodExecution(String className, String methodName, String layer,
                              long executionTime, boolean isSuccess, Throwable exception);
    
    /**
     * 记录控制器请求日志
     * 
     * @param requestPath 请求路径
     * @param method HTTP 方法
     * @param responseTime 响应时间
     * @param statusCode HTTP 状态码
     * @param userAgent 用户代理
     * @param clientIp 客户端 IP
     */
    void recordControllerRequest(String requestPath, String method, long responseTime,
                                int statusCode, String userAgent, String clientIp);
    
    /**
     * 记录异常日志
     * 
     * @param className 类名
     * @param methodName 方法名
     * @param exception 异常
     * @param context 上下文信息
     */
    void recordException(String className, String methodName, Throwable exception, String context);
    
    /**
     * 分析用户行为模式
     * 
     * @param userId 用户ID
     * @param action 操作
     * @param resource 资源
     * @param timestamp 时间戳
     */
    void analyzeUserBehavior(String userId, String action, String resource, LocalDateTime timestamp);
}
